[ 템플릿 코드 ]
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> a, vector<int> b) {
int answer = 1234567890;
return answer;
}
[ 풀이 ]
#include <vector>
using namespace std;
int solution(vector<int> a, vector<int> b)
{
int answer = 0;
for (int i = 0; i < a.size(); i++)
{
answer += a[i] * b[i];
}
return answer;
}
[ 해설 ]
#include <vector> // vector(동적 배열) 사용을 위한 헤더
using namespace std; // std::vector, std::cout 처럼 std::를 생략하기 위해 사용
// 두 정수 벡터 a, b를 받아 내적을 계산하는 함수
int solution(vector<int> a, vector<int> b)
{
// 곱한 값들을 누적해서 저장할 변수
// 처음에는 아무것도 더하지 않았으므로 0으로 초기화
int answer = 0;
// i를 0부터 시작해서
// i가 a의 길이보다 작을 동안 반복
// 반복이 끝날 때마다 i를 1 증가
for (int i = 0; i < a.size(); i++)
{
// 같은 위치의 원소끼리 곱한 후
// answer에 누적해서 더함
//
// 예)
// a[0] = 1, b[0] = -3
// answer += 1 * -3
//
// answer += 는
// answer = answer + (a[i] * b[i]);
// 와 같은 의미
answer += a[i] * b[i];
}
// 모든 원소의 곱을 더한 최종 결과 반환
return answer;
}
[ 타 답안 ]
#include <vector> // vector(동적 배열) 자료형을 사용하기 위한 헤더 파일
using namespace std; // std::vector 처럼 std::를 매번 쓰지 않기 위해 사용
// 두 벡터 a, b를 받아 내적을 계산하는 함수
int solution(vector<int> a, vector<int> b)
{
// 곱한 값들의 합을 저장할 변수
// 아직 아무것도 계산하지 않았으므로 0으로 초기화
int result = 0;
// 배열의 인덱스로 사용할 변수
// 첫 번째 원소부터 확인하기 위해 0으로 시작
int i = 0;
// i가 a의 길이보다 작은 동안 반복
// 예를 들어 a의 길이가 4라면
// i = 0, 1, 2, 3 까지 반복
while (i < a.size())
{
// 같은 위치(인덱스)의 원소끼리 곱한 뒤
// result에 누적해서 더함
//
// 예)
// a[0] = 1, b[0] = -3
// result = 0 + (1 * -3)
// result = -3
//
// 다음 반복에서는
// result = -3 + (2 * -1)
// result = -5
result = result + a[i] * b[i];
// 현재 인덱스의 계산이 끝났으므로
// 다음 원소를 확인하기 위해 i를 1 증가
i++;
}
// 모든 원소의 곱을 더한 최종 결과 반환
return result;
}